package com.enjoyor.soa.traffic.api.ubms.service.dubbo;



import com.enjoyor.soa.traffic.api.ubms.dto.BlockInfoDto;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 * 维护路段信息的Dubbo服务
 * 
 * @author yuankun
 * @version V1.0
 */
@SuppressWarnings("rawtypes")
public interface DubboBlockInfoService {

    /**
     * 返回所有路段信息
     * 
     * @return ResultPojo 所有路段信息
     */
    public ResultPojo getBlockInfo();
    
    /**
     * 返回所有路段名称
     * 
     * @return ResultPojo 所有路段的名称列表
     */
    public ResultPojo getBlockName(String blockId,String blockName); 
    
    /**
     * 返回所有路段信息
     * 
     * @return ResultPojo 所有路段信息
     */
    public ResultPojo getBlockInfo(String blockId, String blockName, String roadId, String roadIdLike, String deptNameLike,
    		String letterAbbr, String orderSeq, String blockTypeCode, String funcAttrCode, String regionId, String broBlockId);

    /**
     * 分页返回所有路段信息
     * 
     * @param page
     *            分页对象
     * @return ResultPojo 包含路段信息的分页对象
     */
    public ResultPojo getPageBlockInfo(Page page);

    /**
     * 分页返回所有路段信息
     * 
     * @param page
     *            分页对象
     * @return ResultPojo 包含路段信息的分页对象
     */
    /*
     * ResultPojo getPageBlockInfo(Page page, String blockId, String blockName,
     * String roadId, String blockTypeCode, String funcAttrCode);
     */
    /**
     * 返回指定路段编码的路段信息
     * 
     * @param blockId
     *            路段编码
     * @return ResultPojo 路段信息
     */
    public ResultPojo getBlockInfoById(String blockId);

    /**
     * 获取同一道路下的所有路段
     * 
     * @param blockId
     * @return
     */
    public ResultPojo getBroBlockInfoById(String blockId);

    /**
     * 根据区域编号获取路段
     * 
     * @param regionId
     * @return
     */
    public ResultPojo getBroBlockInfoByRegionId(String regionId);

    /**
     * 返回指定路段编码的路段信息
     * 
     * @param roadId
     *            路段编码
     * @return ResultPojo 路段信息
     */
    public ResultPojo getBlockInfoByRoadId(String roadId);

    /**
     * 按名称匹配并返回路段信息
     * 
     * @param blockName
     *            路段名称
     * @return ResultPojo 路段信息
     */
    public ResultPojo getBlockInfoByName(String blockName);

    /**
     * 根据路段名称、路段类型、路段功能属性分页返回路段信息
     * 
     * @param page
     *            分页对象
     * @param blockName
     *            路段名称
     * @param blockType
     *            路段类型
     * @param funcAttr
     *            路段功能属性
     * @return ResultPojo 路段信息
     */
    public ResultPojo getPageBlockInfo(Page page, String blockName, String blockType, String funcAttr);
    
	public ResultPojo getPageBlockInfo(Page page, String blockId, String blockName, String roadId, String roadIdLike,String deptNameLike, String letterAbbr, String orderSeq, String blockTypeCode, String funcAttrCode);
    /**
     * 返回与输入前缀相匹配的最大路段编码值，用于手工生成新的路段编码
     * 
     * @param prefixBlockId
     *            路段编码前缀
     * @return String 与前缀相匹配的最大路段编码值
     */
    public String getMaxBlockId(String prefixBlockId);

    /**
     * 添加一条路段信息
     * 
     * @param token
     *            以逗号分隔的输入信息，如用户名等
     * @param blockInfoDto
     *            路段信息
     * @return ResultPojo 添加结果
     */
    public ResultPojo addBlockInfo(String token, BlockInfoDto blockInfoDto);

    /**
     * 修改一条路段信息
     * 
     * @param token
     *            以逗号分隔的输入信息，如用户名等
     * @param blockInfoDto
     *            路段信息
     * @return ResultPojo 修改结果
     */
    public ResultPojo editBlockInfo(String token, BlockInfoDto blockInfoDto);

    /**
     * 删除指定编码的路段信息
     * 
     * @param token
     *            以逗号分隔的输入信息，如用户名等
     * @param blockId
     *            路段编码
     * @return ResultPojo 删除结果
     */
    public ResultPojo removeBlockInfo(String token, String blockId);
}
